var FFI = require('ffi')
var path = require("path")
// var iopath = path.join(__dirname, '/ConsoleApplication1.dll');
var Test = FFI.Library('food', {
   'addSync': [
       'int', ['int', 'int', 'pointer']
   ],
   'main': 
   [
      'int', ['int','int']
   ] ,
   //    'add': //    [ //       'int', ['int','int']  //    ] ,
});
var result = Test.main(11,12)
console.log('DLL-->求和',result)

//定义 回调函数
var addCallback = FFI.Callback('void', ['int', 'int'], (a, b) => {
    console.log('DLL-->回调',a,b);
    });
    
//执行回调的 dll方法
Test.addSync(2,3,addCallback);

// PS： 由于ffi模块是为C语言的dll包服务的，所以自己编写的dll必须要有extern "C" __declspec(dllexport)来修饰里面的函数，放进.h头文件里
// 另一个方法，调用系统自带的user32.dll
// var FFI = require('ffi');

// function TEXT(text){
//    return new Buffer(text, 'ucs2').toString('binary');
// }

// var user32 = new FFI.Library('user32', {
//    'MessageBoxW': 
//    [
//       'int32', [ 'int32', 'string', 'string', 'int32' ]
//    ]
// });

// var OK_or_Cancel = user32.MessageBoxW(
//    0, TEXT('Diao Yong 阿斯......'), TEXT('Hello, World!'), 1
// );
// console.log(OK_or_Cancel);